桁あふれ注意!Alteryxで小数を扱う時のおはなし
DI部の兼本です。
いつものようにAlteryxのデモンストレーションをしていたら、あることに気がついたので、今日はそのお話を。 以下のワークフローでは、V_String型で読み取ったデータを選択ツールでFloat型に変換しています。
変更前のデータ
変更後のデータ
みなさん、お気付きでしょうか・・・。
実は、元のデータには小数点以下を含めて17桁ある一方で、Float型の有効桁数は7桁なので、小数点以下7桁目で丸めが発生した結果、小数点第2位までのデータになっています。 べ、別におかしな動きをしているわけではありません。(でも最初気がついた時はちょっと焦りました。)
では、今回のデータを扱うにはどうすればよいでしょうか。 Alteryxには数値型として以下のデータ型が用意されています。
- Byte型 ... 8バイナリ桁(ビット)長の単位の整数
- Integer型(Int16,Int32,Int64) ... 整数のみ
- 固定小数点(FixedDecimal)型 ... 小数点のある数値
- Float型 ... 標準単精度浮動小数点値
- Double型 ... 標準倍精度浮動小数点値
Double型でも有効桁数15桁なので、この場合は固定小数点(FixedDecimal)型を使う必要があります。固定小数点数は、長さを調整できる唯一の数値データ型で、最大精度は小数点と負の符号(該当する場合)を含めて50桁です。
(外部リンク)Alteryx ヘルプ > データソース > データ型
それでは実際に数値データの変換を実験してみます。 以下のようなデータとワークフローを準備して、文字列型の数字をInteger型、Float型、Double型、FixedDecimal型にそれぞれ変換してみます。 FixedDecimal型については、全体で25桁、小数点以下を20桁とするためにサイズを「25.20」と定義しています。
検証用データ
作成したワークフロー
実行すると結果は以下のようになります。
Float型に変換したデータは7桁、Double型に変換したデータは16桁で丸めが発生していることが確認できます。 なお、Double型については結果ウィンドウでは7桁だけが表示されていますが、実際には16桁までのデータが保持されてます。 また、FixedDecimal型の場合は、データ型で定義した小数点以下の桁数が維持されていることもわかります。
注:Float型やDouble型は「浮動」小数点数を表すデータ型であるため、厳密には小数点以下何桁まで表せるものではないこと、ご注意ください。
まとめ
今回は小数の桁数に注目してみました。 データ分析を行う際は様々なデータを扱う必要がありますので、データの内容によって適切なデータ型を選択することが重要ですね。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。